<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.9.0"> </script>
    <script>
        // 一个模型就是一个函数，只是它完成了特定的任务
        // 有两种方式来创建模型，一种是通过操作（ops）来直接完成模型本身所做的工作，另外一种就是通过高级API tf.model来创建一个模型，显然第二种是更容易的

        // 先看第一种  注意：所有的数字都需要经过tf.scalar()张量处理
        function predict(input) {
            return tf.tidy(() => {
                // y = a * x ^ 2 + b * x + c
                const x = tf.scalar(input) // 0维， 等于一个数，点
                const ax2 = a.mul(x.square())
                const bx = b.mul(x)
                const y = ax2.add(bx).add(c)

                return y
            })
        }

        const a = tf.scalar(2)
        const b = tf.scalar(4)
        const c = tf.scalar(8)

        const result = predict(2)
        result.print() // 24

        // 第二种 创建 sequencial模型
        const model = tf.sequencial()
        model.add(
            tf.layers.simpleRNN({
                units: 20,
                recurrentInitializer: 'GlorotNormal',
                inputShape: [80, 4]
            })
        )
        const optimizer = tf.train.sgd(LEARNING_RATE)
        model.compile({ optimizer, loss: 'categoricalCrossentropy' })
        model.fit({ x: data, y: labels })
    </script>
</head>

<body>

</body>

</html>